package com.fsnbigdata.service.api;
import com.fsnbigdata.domain.ParkDistrict;
import org.springframework.roo.addon.layers.service.annotations.RooService;
import com.fsnbigdata.domain.Park;
import com.fsnbigdata.domain.ParkDistrictOrganism;
import io.springlets.data.domain.GlobalSearch;
import io.springlets.format.EntityResolver;
import java.util.List;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

/**
 * = ParkDistrictService
 *
 * TODO Auto-generated class documentation
 *
 */
@RooService(entity = ParkDistrict.class)
public interface ParkDistrictService extends EntityResolver<ParkDistrict, Long> {

    /**
     * TODO Auto-generated method documentation
     *
     * @param id
     * @return ParkDistrict
     */
    public abstract ParkDistrict findOne(Long id);

    /**
     * TODO Auto-generated method documentation
     *
     * @param entity
     * @return ParkDistrict
     */
    public abstract ParkDistrict save(ParkDistrict entity);

    /**
     * TODO Auto-generated method documentation
     *
     * @param id
     * @return ParkDistrict
     */
    public abstract ParkDistrict findOneForUpdate(Long id);

    /**
     * TODO Auto-generated method documentation
     *
     * @param ids
     * @return List
     */
    public abstract List<ParkDistrict> findAll(Iterable<Long> ids);

    /**
     * TODO Auto-generated method documentation
     *
     * @param parkDistrict
     * @param organismsToAdd
     * @return ParkDistrict
     */
    public abstract ParkDistrict addToOrganisms(ParkDistrict parkDistrict, Iterable<ParkDistrictOrganism> organismsToAdd);

    /**
     * TODO Auto-generated method documentation
     *
     * @param parkDistrict
     * @param organismsToRemove
     * @return ParkDistrict
     */
    public abstract ParkDistrict removeFromOrganisms(ParkDistrict parkDistrict, Iterable<Long> organismsToRemove);

    /**
     * TODO Auto-generated method documentation
     *
     * @param park
     * @param globalSearch
     * @param pageable
     * @return Page
     */
    public abstract Page<ParkDistrict> findByPark(Park park, GlobalSearch globalSearch, Pageable pageable);

    /**
     * TODO Auto-generated method documentation
     *
     * @param park
     * @return Long
     */
    public abstract long countByPark(Park park);

    public abstract List<Long> getIdsByCity(String city);
}
